<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">
<ui:composition template="../templates/layout.xhtml">
    <ui:define name="title">Tabla Cuentas Contables</ui:define>
    <ui:define name="content">
        <p:spacer height="5px"/>
        <p:panel>
            <h:outputText value="Tabla Cuentas Contables" styleClass="text_header_page"/>
        </p:panel>
        <p:spacer height="5px"/>
        <h:form id="frmPrincipal">
            <p:panel header="Carga Masiva" toggleable="true" collapsed="true" rendered="#{reporteCuentaCobrarJsfBean.administrador}">
                <h:panelGrid columns="1">
                    <p:fileUpload fileUploadListener="#{maestroCuentaContableJsfBean.uploadFileAction}"
                                  mode="advanced" cancelLabel="Cancelar" uploadLabel="Cargar Archivo"
                                  label="Seleccionar Archivo"
                                  update=":messages"
                                  sizeLimit="52428800"
                                  allowTypes="/(\.|\/)(csv)$/"/>
                    <p:spacer height="10px"/>

                    <h:panelGrid id="gridBotones">
                        <p:commandButton value="Procesar" icon="ui-icon-refresh"
                                         actionListener="#{maestroCuentaContableJsfBean.procesar}"

                                         ajax="true" update=":messages"
                                />
                    </h:panelGrid>
                </h:panelGrid>
            </p:panel>
            <!-- Panel de búsqueda-->
            <p:panel id="panelBusqueda" header="Búsqueda de Cuentas Contables">
                <h:panelGrid id="gridBusqueda" columns="9">
                    <p:spacer width="13px"/>
                    <h:outputLabel value="Cuenta Mayor"/>
                    <p:inputText value="#{maestroCuentaContableJsfBean.filtroBusqueda.codigo}"
                                 size="15" maxlength="15"/>

                    <h:outputLabel value="Descripción"/>
                    <p:inputText value="#{maestroCuentaContableJsfBean.filtroBusqueda.descripcion}"
                                 size="25" maxlength="100"/>
                    <h:outputLabel value="Estado"/>
                    <p:selectOneMenu value="#{maestroCuentaContableJsfBean.filtroBusqueda.estado}" effect="fade"
                            >
                        <f:selectItem itemValue="" itemLabel="Todos"/>
                        <f:selectItems value="#{maestroCuentaContableJsfBean.allEstado}"
                                       var="estadoSelect" itemLabel="#{estadoSelect.nombre}"
                                       itemValue="#{estadoSelect}"/>
                    </p:selectOneMenu>
                    <h:outputLabel value="Opción"/>
                    <p:selectOneMenu value="#{maestroCuentaContableJsfBean.filtroBusqueda.opcion}" effect="fade"
                            >
                        <f:selectItem itemValue="" itemLabel="Todos"/>
                        <f:selectItems value="#{maestroCuentaContableJsfBean.allOpcion}"
                                       var="opcionSelect" itemLabel="#{opcionSelect.nombre}"
                                       itemValue="#{opcionSelect}"/>
                    </p:selectOneMenu>
                    <p:spacer width="13px"/>
                    <h:outputLabel for="inputTipo" value="Tipo Cuenta"/>
                    <p:selectOneMenu id="inputTipo" value="#{maestroCuentaContableJsfBean.filtroBusqueda.tipoCuentaBusqueda}"
                                     effect="fade" style="width: 150px"

                            >
                        <f:selectItem itemValue="" itemLabel="Todos"/>
                        <f:selectItems value="#{maestroCuentaContableJsfBean.allTipoCuenta}"
                                       var="tipoSelect" itemLabel="#{tipoSelect.nombre}" itemValue="#{tipoSelect}"/>
                        <p:ajax event="change" update=":frmPrincipal:cmbAgrupacion :messages" process="@this"
                                listener="#{maestroCuentaContableJsfBean.onSelectTipoCuenta}"/>

                    </p:selectOneMenu>

                    <h:outputLabel value="Agrupación"/>
                    <p:selectOneMenu id="cmbAgrupacion" value="#{maestroCuentaContableJsfBean.filtroBusqueda.agrupacion}" effect="fade"
                                     style="width: 150px"  converter="#{managerAgrupacionDTOConverter}"
                            >
                        <f:selectItem itemValue="" itemLabel="Todos"/>
                        <f:selectItems value="#{maestroCuentaContableJsfBean.cmbAgrupacion}"
                                       var="agrupacionSelect" itemLabel="#{agrupacionSelect.nombre}"
                                       itemValue="#{agrupacionSelect}"/>
                    </p:selectOneMenu>

                </h:panelGrid>
                <p:spacer height="3px"/>

                <p:spacer height="3px"/>
                <h:panelGrid id="gridBusqueda3" columns="3">
                    <p:commandButton ajax="true" value="Buscar" id="btnBuscar" icon="ui-icon-search"
                                     actionListener="#{maestroCuentaContableJsfBean.findAction}"
                                     update=":frmPrincipal:panelResultados :messages :frmPrincipal"/>
                    <p:commandButton ajax="true" value="Limpiar" id="btnLimpiar" icon="ui-icon-refresh"
                                     actionListener="#{maestroCuentaContableJsfBean.cleanAction}"
                                     update=":frmPrincipal:panelBusqueda :frmPrincipal:panelResultados :messages"/>
                </h:panelGrid>
            </p:panel>

            <p:spacer height="10px"/>

            <!-- Panel de resultados (donde está la tabla)  -->
            <p:panel id="panelResultados" header="Resultados">
                <p:toolbar rendered="#{maestroCuentaContableJsfBean.administrador}">

                    <p:toolbarGroup align="left">
                        <p:commandButton id="linkNuevo" value="Nuevo" ajax="true"
                                         actionListener="#{maestroCuentaContableJsfBean.showNewDialog}"
                                         oncomplete="wvCreateDialog.show()" update=":createDialog"/>
                        <p:commandButton id="editButton" value="Editar"
                                         actionListener="#{maestroCuentaContableJsfBean.showEditDialog}"
                                         update=":createDialog :messages">
                            <f:attribute name="tableName" value="tablaRegistros"/>
                            <f:attribute name="dialogName" value="wvCreateDialog"/>
                        </p:commandButton>
                        <p:commandButton id="deleteButton" value="Eliminar"
                                         actionListener="#{maestroCuentaContableJsfBean.showDeleteDialog}"
                                         update=":createDialog :messages">
                            <f:attribute name="tableName" value="tablaRegistros"/>
                            <f:attribute name="dialogName" value="wvDeleteDialog"/>
                        </p:commandButton>
                    </p:toolbarGroup>
                </p:toolbar>


                <p:dataTable id="tablaRegistros" value="#{maestroCuentaContableJsfBean.registros}"
                             var="registro" rowKey="#{registro.cuentaContableId}" paginator="true" rows="25"
                             paginatorPosition="bottom" emptyMessage="No existen registros"
                             selection="#{maestroCuentaContableJsfBean.nuevoRegistro}"
                             selectionMode="single"
                             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                             rowsPerPageTemplate="5,10,25,50">
                    <p:column style="text-align: left;width: 80px">
                        <f:facet name="header">
                            <h:outputText value="Agrupaciones"/>
                        </f:facet>
                        <h:outputText value="#{registro.agrupacionStr}"/>
                    </p:column>
                    <p:column style="text-align: left;width: 80px">
                        <f:facet name="header">
                            <h:outputText value="Cuenta Mayor"/>
                        </f:facet>
                        <h:outputText value="#{registro.cuentaContableId}"/>
                    </p:column>
                    <p:column style="text-align: left">
                        <f:facet name="header">
                            <h:outputText value="Descripcióm"/>
                        </f:facet>
                        <h:outputText value="#{registro.descripcion}"/>
                    </p:column>
                    <p:column style="text-align: left;width: 80px">
                        <f:facet name="header">
                            <h:outputText value="Estado"/>
                        </f:facet>
                        <h:outputText value="#{registro.estado.nombre}"/>
                    </p:column>
                    <p:column style="text-align: left;width: 80px">
                        <f:facet name="header">
                            <h:outputText value="Creado Por"/>
                        </f:facet>
                        <h:outputText value="#{registro.creadoPor}"/>
                    </p:column>
                    <p:column style="text-align: left;width: 80px">
                        <f:facet name="header">
                            <h:outputText value="Fecha Creación"/>
                        </f:facet>
                        <h:outputText value="#{registro.fechaCreacion}">
                            <f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Lima" type="both"/>
                        </h:outputText>
                    </p:column>
                </p:dataTable>
            </p:panel>
        </h:form>
    </ui:define>

    <ui:define name="modal">
        <p:dialog closeOnEscape="true" id="createDialog" header="Nueva Cuenta Contable" modal="true" onShow="upperInput();"
                  widgetVar="wvCreateDialog" resizable="false" showEffect="fade" hideEffect="fade">

            <p:ajax event="close" update=":frmPrincipal:panelResultados :createDialog"
                    listener="#{maestroCuentaContableJsfBean.handleDialogClose}"/>

            <p:panel id="NuevoRegistro">
                <h:form id="NuevoRegistroForm">
                    <h:panelGrid id="gridBusquedaDialog" columns="3">


                        <h:outputLabel for="inputCodigo" value="Cuenta Mayor"/>
                        <p:inputText id="inputCodigo"
                                     value="#{maestroCuentaContableJsfBean.nuevoRegistro.cuentaContableId}"
                                     required="true" requiredMessage="*" style="width: 100px"
                                     size="15" maxlength="15"/>
                        <p:message for="inputCodigo" display="text"/>

                        <h:outputLabel for="inputDescripcion" value="Descripción"/>
                        <p:inputText id="inputDescripcion"
                                     value="#{maestroCuentaContableJsfBean.nuevoRegistro.descripcion}"
                                     required="true" requiredMessage="*"
                                     size="50" maxlength="100"/>
                        <p:message for="inputDescripcion" display="text"/>

                        <p:column>
                            <p:outputLabel for="cmbTipoOperacion" value="Tipo de Cuenta"/>
                        </p:column>
                        <p:column>
                            <p:selectOneMenu panelStyle="width: 150px" style="width: 160px"
                                             id="cmbTipoOperacion"
                                             value="#{maestroCuentaContableJsfBean.nuevoRegistro.tipoOperacion}">
                                <f:selectItem itemLabel="Seleccione" itemValue=""/>
                                <f:selectItems value="#{maestroCuentaContableJsfBean.allTipoOperacion}"
                                               var="tipoOperacion" itemLabel="#{tipoOperacion.nombre}"
                                               itemValue="#{tipoOperacion}"
                                        />

                            </p:selectOneMenu>
                        </p:column>

                        <p:message for="cmbTipoOperacion" display="text"/>

                        <h:outputLabel for="inputEstado" value="Estado"/>
                        <p:selectOneMenu id="inputEstado" value="#{maestroCuentaContableJsfBean.nuevoRegistro.estado}"
                                         effect="fade"
                                         required="true" requiredMessage="*"
                                >
                            <f:selectItem itemLabel="Seleccione" itemValue=""/>
                            <f:selectItems value="#{maestroCuentaContableJsfBean.allEstado}"
                                           var="estadoSelect" itemLabel="#{estadoSelect.nombre}"
                                           itemValue="#{estadoSelect}"/>
                        </p:selectOneMenu>
                        <p:message for="inputEstado" display="text"/>

                    </h:panelGrid>
                    <p:spacer height="3px"/>
                    <h:panelGrid id="gridBusqueda3Dialog" columns="2" styleClass="centered">
                        <p:commandButton ajax="true" value="Guardar" id="btnGuardar"
                                         actionListener="#{maestroCuentaContableJsfBean.persistAction}"
                                         update=":NuevoRegistroForm :frmPrincipal:panelResultados :messages">
                            <f:attribute name="dialogName" value="wvCreateDialog"/>
                        </p:commandButton>
                        <p:commandButton ajax="true" value="Cancelar" id="btnCancelar" onclick="wvCreateDialog.hide()"
                                         type="button"
                                         immediate="true" process="@none"/>
                    </h:panelGrid>
                </h:form>
            </p:panel>
        </p:dialog>
        <ui:decorate template="/pages/ui/uiDelete.xhtml">
            <ui:param name="jsfBean" value="#{maestroCuentaContableJsfBean}"/>
        </ui:decorate>
    </ui:define>
</ui:composition>
</html>